﻿using System.Text.Json.Serialization;

namespace GanFeng.Forest.WebApi.Objects
{
    /// <summary>
    /// API 结果
    /// </summary>
    public class ApiResult
    {
        /// <summary>
        /// 创建一个新的 API 结果
        /// </summary>
        /// <param name="code">错误代码</param>
        public ApiResult(int code) 
        { 
            Code = code;
            Message = code switch
            {
                1 => "参数为空",
                2 => "参数缺少设备编码",
                3 => "服务配置错误",
                4 => "未知的设备码",
                5 => "服务的 IP 配置错误",
                6 => "上位机服务内部错误",
                7 => "配方原材料设置错误",
                8 => "配方运行时间设置错误",
                9 => "配方转速设置错误",
                10 => "配方功能码设置错误",
                11 => "设置配方时与 PLC 通讯失败",
                12 => "PLC 内部错误",
                13 => "设置工步运行时与 PLC 通信失败",
                14 => "投料时与 PLC 的通讯失败",
                15 => "读取当前配方时与 PLC 的通讯失败",
                16 => "设置物料匹配时与 PLC 通讯失败",
                17 => "物料设备码与物料不匹配",
                18 => "工步号超出配置范围",
                19 => "提供的物料编码与配方中该工步的物料编码不一致",
                20 => "服务 PLC 地址配置错误",
                21 => "当前搅拌机不处于 MES 模式",
                22 => "读取到无效的制胶物料匹配记录",
                23 => "制胶工步运行失败，物料匹配记录的工步号与要运行的工步号不一致",
                24 => "制胶工步运行失败，物料匹配成功已超过一个小时，请重新扫码做物料匹配",
                25 => "制胶机器不允许投料，请检查机器状况",
                26 => "制胶（稀释）工步，功能码不接受慢搅拌设定",
                27 => "制胶（稀释）工步，非加料工步的搅拌转速必须在 2 - 40 之间",
                28 => "制胶（稀释）工步，非加料工步的分散转速必须在 80 - 1450 之间",
                29 => "制胶（稀释）工步，加料工步的搅拌转速必须在 2 - 16 之间",
                30 => "制胶（稀释）工步，加料工步的分散转速必须在 80 - 500 之间",
                31 => "制胶（稀释）工步，加料工步的压力值只能为 0",
                32 => "制胶（稀释）工步，加料工步的搅拌时间只能为 0",
                33 => "制胶机液位大于配置的阈值，不允许进行制胶",
                34 => "制胶（稀释）配方已停止运行，无法执行工步运行",
                35 => "由于稀释系统繁忙，当前不接受配方，请稍后再下发配方",
                36 => "稀释配方下发失败，PLC 无法设置配方可用，请重新下发配方",
                37 => "稀释配方下发，应调用 221 接口",
                38 => "稀释配方下发失败。请检查传入的设备编码，该设备不是稀释搅拌机",
                39 => "稀释配方下发失败。不允许执行稀释相关操作",
                40 => "机器不允许开机，请现场确认机器情况",
                41 => "机器开机异常，无法正确读取上料重量",
                42 => "机器开机异常，无法正确写入上料重量",
                43 => "机器无法正常进入加液工步，请现场确认机器情况",
                44 => "稀释搅拌加液未正常完成，请现场确认机器情况",
                45 => "稀释搅拌下发重量确认参数无效，类型只能是 2 或 3",
                46 => "稀释物料错误",
                47 => "稀释搅拌上料与 PLC 通信出现异常",
                48 => "物料编码配置异常",
                49 => "无法找到匹配的物料编码",
                50 => "上料系统配置错误",
                _ => "成功",
            };
        }
        /// <summary>
        /// 错误码
        /// </summary>
        [JsonPropertyName("code")]
        public int Code { get; set; }
        /// <summary>
        /// 信息
        /// </summary>
        [JsonPropertyName("message")]
        public string Message { get; set;} = string.Empty;
    }
}
